МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА"
ІНСТИТУТ ПІСЛЯДИПЛОМНОЇ ОСВІТИ
/
ЗВІТ ДО ЛАБОРАТОРНОЇ РОБОТИ №3
на тему:
«Основні інструкції мови SQL. Однотабличні запити»
з курсу:
"Бази даних"
Львів – 2014
Мета: Вивчення синтаксису інструкції SELECT, отримання практичних навиків написання однотабличних запитів.
Хід роботи
Вправа 1. Модифікуйте запит з прикладу 1, щоб результатом було повернення лише даних про ім’я замовника та його розміщення.
SELECT
*
FROM Customers
Результатом буде запит:
SELECT
cname, city
FROM Customers
Виконання зображено на рис. 1.
/
Рис. 1. Запит до вправи 1
Вправа 2. Модифікуйте запит з прикладу 2, так щоб результатом було повернення списку замовників розміщених у Лондоні або Римі.
SELECT
cname,
city,
rating
FROM Customers
WHERE
city = 'London'
Результатом буде запит:
SELECT
cname,
city,
rating
FROM Customers
WHERE
city = 'London' or city = 'Rome'
Виконання зображено на рис. 2.
/
Рис. 2. Запит до вправи 2
Вправа 3. Модифікуйте запит з прикладу 2, так щоб результатом було повернення списку замовників розміщених за межами Лондона та із рівнем переваги понад 200.
Результатом буде запит:
SELECT
cname,
city,
rating
FROM Customers
WHERE
city <> 'London' and rating > 200
Виконання зображено на рис. 3.
/
Рис. 3. Запит до вправи 3
Вправа 4. Модифікуйте запит з прикладу 2, так щоб результатом було повернення списку замовників імена, яких починаються на “Gr” .
Результатом буде запит:
SELECT
cname,
city,
rating
FROM Customers
WHERE
cname like 'Gr%'
Виконання зображено на рис. 4.
/
Рис. 4. Запит до вправи 4
Вправа 5. Модифікуйте запит з прикладу 2, так щоб результатом було повернення списку замовників у іменах, яких більше 5-ти букв.
Результатом буде запит:
SELECT
cname,
city,
rating
FROM Customers
WHERE
LEN(cname) > 5
Виконання зображено на рис. 5.
/
Рис. 5. Запит до вправи 5
Вправа 6. Модифікуйте запит з прикладу 3, так щоб результатом було повернення списку замовників, що не співпрацюють із продавцем Peel, а також із продавцями, у яких комісія перевищує 0,13 .
SELECT cname,city,rating
FROM Customers
WHERE snum NOT IN
(
SELECT snum
FROM Salers
WHERE sname = 'Peel')
Результатом буде запит:
SELECT
cname,
city,
rating
FROM Customers
WHERE
snum NOT IN (
SELECT
snum
FROM Salers
WHERE
sname = 'Peel' or comm > 0.13
)
Виконання зображено на рис. 6.
/
Рис. 6. Запит до вправи 6
Вправа 7. Модифікуйте запит з прикладу 3, так щоб результатом було повернення списку замовників, що не здійснювали операцію купівлі продажу після 04-09-2013.
Результатом буде запит:
SELECT
cname,
city,
rating
FROM Customers
WHERE
cnum NOT IN (
SELECT
cnum
FROM Orders
WHERE
odate > '2013-09-04'
)
Виконання зображено на рис. 7.
/
Рис. 7. Запит до вправи 7
Вправа 8. Реалізуйте запит, результатом якого є об’єднаний список замовників із вправи 6 та вправи 7 (підказка: для об’єднання результатів двох запитів застосуйте оператор UNION).
Результатом буде запит:
SELECT
cname,
city,
rating
FROM Customers
WHERE
snum NOT IN (
SELECT
snum
FROM Salers
WHERE
sname = 'Peel' or comm > 0.13
)
union
SELECT
cname,
city,
rating
FROM Customers
WHERE
cnum NOT IN (
SELECT
cnum
FROM Orders
WHERE
odate > '2013-09-04'
)
Виконання зображено на рис. 8.
/
Рис. 8. Запит до вправи 8
Вправа 9. Спробуйте виконати запиит, поясніть помилку, що виникла.
SELECT
snum,
cname,
COUNT(cnum)
FROM Customers
GROUP BY
Snum
При виконанні виникла помилка: Column 'Customers.cname' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause. Це пояснюється тим, що ми не вказали назву агрегатної функції. В запит потрібно внести наступні зміни:
SELECT
snum,
cname,
COUNT(cnum) as N
FROM Customers
GROUP BY
snum,
cname
Виконання зображено на рис. 9.
/
Рис. 9. Запит до вправи 9
Вправа 10. Реалізуйте запит, котрий підрахує кількість операцій купівлі продажу за кожен з днів.
Результатом буде запит...